package org.jeecg.modules.rental.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.iot.model.EBikeLocation;
import org.jeecg.modules.rental.entity.RentalEBike;
import org.jeecg.modules.rental.req.AssembleReq;
import org.jeecg.modules.rental.req.ManageEBikeReq;
import org.jeecg.modules.rental.req.SetControlReq;
import org.jeecg.modules.rental.req.SwapCarReq;
import org.jeecg.modules.rental.resp.IotInfoResp;
import org.jeecg.modules.rental.resp.ManageEBikeResp;

import java.util.List;

/**
 * @Description: 租车车辆信息
 * @Author: sean
 * @Date:   2024-04-26
 * @Version: V1.0
 */
public interface IRentalEBikeService extends IService<RentalEBike> {

    Result<Page<RentalEBike>> selectManageDetailPage(Page page, Wrapper wrapper);

    void add(RentalEBike req);

    /**
     * 查询车辆信息带车辆类型
     * @param carIds
     * @return
     */
    List<RentalEBike> listWithType(List<Long> carIds);

    void addcar();

    Boolean pushEBikeInfo(String carCode);

    void edit(RentalEBike rentalCar);

    Result<RentalEBike> newVerify(String code, Boolean verifyCarId);

    void setFence(RentalEBike rentalCar);

    Result <String> swap(SwapCarReq swapCarReq);

    void setControl(SetControlReq setControlReq);

    void batchSetControl(SetControlReq setControlReq);

    List<ManageEBikeResp> selectManageList(ManageEBikeReq req, Wrapper wrapper);

    List<ManageEBikeResp> selectManageWithDetailList(Wrapper wrapper);


    Result<List<RentalEBike>> listNoTenant(RentalEBike rentalCar);

    RentalEBike getByIdNoTenant(String id);

    List<EBikeLocation> selectLocationList(Wrapper wrapper);

    IPage<RentalEBike> selectJoinPage(Page<RentalEBike> page, Wrapper wrapper);

    Boolean editCustomCode(Long ebikeId, String customCode);

    IotInfoResp iotInfo(String iotCode);

    Boolean assemble(AssembleReq assembleReq);

    List<RentalEBike> listByCode(String code);

//    String selectCarTrackList(CarTrackReq req);
//
//    String getTrackList(EBikeTrackReq trackReq);

//    CarLocationDTO queryInfoBycode(RentalEBike car);

    //    Result<Page<RentalManageCarRsp>> carDetail(RentalManageCarReq req, Page page);
//
//    Result<List<RentalManageCarRsp>> carDetailNoNeedPage(RentalManageCarReq req);
//
//    Result<List<RentalManageCarRsp>> carDetailOrderNoNeedPage(RentalManageCarReq req);

//    /**
//     * 批量获取车辆位置信息
//     *
//     * @param req
//     * @return
//     */
//    List<EBikeLocation> selectCarLocationList(RentalEBike req);
//

}
